package com.yemyatthu.moelaywatha.ui;
import android.content.SharedPreferences;
import android.location.Location;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.ActionBarActivity;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.yemyatthu.moelaywatha.Config;
import com.yemyatthu.moelaywatha.sync.WeatherSyncAdapter;
import timber.log.Timber;
/**
* Created by yemyatthu on 3/27/15.
*/
public class BaseActivity extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,LocationListener {
public Location mLastLocation;
public float mLatitude=0;
public float mLongitude=0;
public SharedPreferences mSharedPreferences;
private GoogleApiClient mGoogleApiClient;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
buildGoogleApiClient();
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
}
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
@Override public void onConnected(Bundle bundle) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
Timber.d(mLastLocation==null? "null":"not null");
if (mLastLocation != null) {
mLatitude = (float)mLastLocation.getLatitude();
mLongitude = (float)mLastLocation.getLongitude();
Timber.d(mLatitude+"");
Timber.d(mLongitude+"");
mSharedPreferences.edit().putFloat(Config.LAST_LATITUDE, mLatitude).apply();
mSharedPreferences.edit().putFloat(Config.LAST_LONGITUDE, mLongitude).apply();
}else{
LocationRequest mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
.setInterval(10 * 1000) // 10 seconds, in milliseconds
.setFastestInterval(1 * 1000);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,this);
}
}
@Override public void onConnectionSuspended(int i) {
}
@Override public void onConnectionFailed(ConnectionResult connectionResult) {
}
@Override protected void onResume() {
super.onResume();
mGoogleApiClient.connect();
}
@Override protected void onPause() {
super.onPause();
mGoogleApiClient.disconnect();
}
@Override public void onLocationChanged(Location location) {
mLatitude = (float)location.getLatitude();
mLongitude = (float)location.getLongitude();
Timber.d(mLatitude+"");
Timber.d(mLongitude+"");
mSharedPreferences.edit().putFloat(Config.LAST_LATITUDE, mLatitude).apply();
mSharedPreferences.edit().putFloat(Config.LAST_LONGITUDE, mLongitude).apply();
WeatherSyncAdapter.syncImmediately(getApplicationContext());
}
}